The nearly ubiquitous adoption of computers has spawned a wide variety of application programs. The advent of the Internet and World Wide Web have resulted in the wide spread development of application programs operable upon various computing platforms. For example, browsers have been developed to execute or run upon various computing platforms, such as operating under control of the WINDOWS, UNIX, and MAC OS operating systems, to facilitate execution or running of Internet application programs. Such Internet application programs have often been developed using declarative code, such as using hypertext markup language (HTML) and extensible markup language (XML), in order to facilitate operation on various computing platforms, communication via the Internet, operation in server/client environments, et cetera. The aforementioned declarative code expressly defines application program objects, such as a Web page to be displayed by the Internet application program. For example, the document object model (DOM), a programming interface specification developed by the World Wide Web Consortium (W3C), allows a developer to create and modify HTML pages and XML documents as program objects.
The foregoing applications typically provide a structure in which each Web page comprises a relatively static display of content. Accordingly, the applications generally provide a regimented structure in which predefined documents are presented in response to user interaction.
The use of such application structure has its advantages. For example, the application program objects are easily accommodated by a browser interface and thus may readily be accessed by a variety of computing platforms. Moreover, the well defined structure of the application, with its readily identifiable navigation markers, facilitate discovery of content within the application by automated means. For example, Web crawlers, Web spiders, and other search engine information probes are application programs which continually or periodically automatically access Web pages to collect information regarding the content therein, such as to populate databases of an Internet search engine. One example of an Internet search engine employing automated Web crawling technology is the well known GOOGLE search engine provided by Google Inc. Mountain View, Calif. Because of the vast amount of information now available through the Internet, such search engines have become a primary means by which users are enabled to identify and access desired information. Thus the use of the tree structure and declarative language of the aforementioned application programs is advantageous in facilitating users finding and accessing the content thereof.
However, the use of such application structure is not without disadvantage. For example, the predefined documents present a constrained environment in which the user experience is primarily that of flipping pages, much like that of reading a book or magazine. Accordingly, rich applications, such as present a user with a fluid interface and dynamic operation, are not accommodated by the foregoing structure.
Rich Internet applications have been developed which present a user with an interface which is not constrained by the foregoing structure and thus deliver application front ends that combine desktop software functionality with the broad reach and low cost deployment of the Web. For example, FLEX, available from Macromedia, Inc., San Francisco, Calif., provides the aforementioned rich Internet applications.
Although providing an improved user experience, such rich Internet applications do not readily accommodate interaction with the aforementioned search engines and their associated Web crawlers. For example, rich Internet applications define a dynamic runtime environment defined by procedural code rather than a structure of static pages which are declaratively defined. Accordingly, a Web crawler is not well suited for discovering the content of such a rich Internet application. That is, search engines and their associated Web crawlers do not have the capability to process rich Internet application content in real time.
A Web crawler may parse through the rich Internet application code to identify textual information in order to obtain a sense of the content provided by the rich Internet application. However, such textual information only provides limited with respect to the content provided by the application. For example, the rich Internet application may interact with the user to access databases, et cetera, and thus the foregoing textual information might identify the types of databases interfaced, but would not have access to the content of the databases. Moreover, even where such textual information provides useful information, a search engine using this information is typically unable to facilitate a user directly accessing this information within the rich Internet application. The rich Internet application is typically entered at an initial point and the runtime environment of the application proceeds to present information dynamically. Thus the textual information identified by the Web crawler may not be directly accessible to a user via the search engine because the rich Internet application is to be entered through the initial point and the information arrived at through the dynamic runtime environment.
A prior attempt to make such rich Internet applications more compatible with the aforementioned search engine technologies has been to shadow a rich Internet application with a HTML version of the application. Such a technique suffers from the obvious disadvantage of requiring duplication of effort in coding the actual rich Internet application as well as the shadow HTML. Moreover, management of the application becomes problematic as changes in the rich Internet application must also be made to the shadow HTML, if that HTML code is to remain consistent with the rich Internet application. Some attempts have been made to simplify the developer's task in providing shadow HTML. For example, COLD FUSION, available from Macromedia, Inc., San Francisco, Calif., provides a feature in which static Web pages are generated out of dynamic content.